package com.gokzzz.service;

import com.gokzzz.dto.SysLogSearchQueryDTO;
import com.gokzzz.entity.SysLog;
import com.gokzzz.response.PageData;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * @author ganfujia
 * @date 2022/4/15 16:31
 */
@Validated
public interface ISysLogService {

    /**
     * 保存日志
     *
     * @param browser   浏览器
     * @param ip        IP
     * @param joinPoint 切点
     * @param sysLog    日志对象
     */
    void saveSysLog(@NotBlank(message = "浏览器为null") String browser,
                    @NotBlank(message = "IP为null") String ip,
                    @NotNull(message = "切点为null") ProceedingJoinPoint joinPoint,
                    @NotNull(message = "日志对象") SysLog sysLog);

    /**
     * 查询日志列表
     *
     * @param sysLogSearchQueryDTO 查询条件
     * @param page                 分页对象
     * @param size                 每页显示条数
     * @return 日志列表
     */
    PageData<SysLog> listSysLogByPage(@NotNull(message = "查询条件为null") SysLogSearchQueryDTO sysLogSearchQueryDTO,
                                      @NotNull(message = "页码为null") Long page,
                                      @NotNull(message = "页数为null") Long size);

    /**
     * 删除全部日志
     */
    void delAllSysLog();
}
